package com.matrix.media.mapper;

import com.matrix.media.entity.project.MixedGlobalConfig;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface MixedGlobalVideoConfigMapper {

    /**
     * 查询全局视频配置信息
     * @param id 全局视频配置的唯一标识
     * @return 返回全局视频配置实体类对象
     */
    @Select("SELECT * FROM mixed_global_video_config WHERE id = #{id}")
    MixedGlobalConfig findById(String id);

    /**
     * 查询全局视频配置列表
     * @return 返回全局视频配置实体类对象列表
     */
    @Select("SELECT * FROM mixed_global_video_config")
    List<MixedGlobalConfig> findAll();

    /**
     * 插入全局视频配置信息
     * @param config 全局视频配置实体类对象
     * @return 插入操作影响的行数
     */
    @Insert("INSERT INTO mixed_global_video_config (id, mixed_cut_project_id, ratio_width, ratio_height, " +
            "resolution_width, resolution_height, global_subtitle_json, global_title_json, background_music_json, " +
            "transition_settings_json, filter_settings_json, background_color_json, cover_image_json, created_time, updated_time) " +
            "VALUES (#{id}, #{mixedCutProjectId}, #{ratioWidth}, #{ratioHeight}, #{resolutionWidth}, #{resolutionHeight}, " +
            "#{globalSubtitleJson}, #{globalTitleJson}, #{backgroundMusicJson}, #{transitionSettingsJson}, #{filterSettingsJson}, " +
            "#{backgroundColorJson}, #{coverImageJson}, #{createdTime}, #{updatedTime})")
    int insert(MixedGlobalConfig config);

    /**
     * 更新全局视频配置信息
     * @param config 全局视频配置实体类对象
     * @return 更新操作影响的行数
     */
    int update(MixedGlobalConfig config);

    /**
     * 删除全局视频配置信息
     * @param id 全局视频配置的唯一标识
     * @return 删除操作影响的行数
     */
    @Delete("DELETE FROM mixed_global_video_config WHERE id = #{id}")
    int deleteById(String id);
}
